﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using nvn.Core.MVP;
using Hutech.CRM.Library.Models.Entities;

namespace Hutech.CRM.Library.Models.BusinessAccessLayer.BusinessObjects
{
    public interface IDanhMucThongTinBAL : IBaseBAL
    {
        /// <summary>
        /// get tất cả loại danh mục đang có kể cả IsActive = false
        /// </summary>
        /// <returns></returns>
        List<DanhMucThongTin> GetAllLoaiDanhMuc();

        /// <summary>
        /// Lưu danh mục, loại danh mục
        /// </summary>
        /// <param name="loaiDanhMuc"></param>
        /// <returns></returns>
        bool Save(DanhMucThongTin loaiDanhMuc);

        /// <summary>
        /// Kiểm tra tên loại danh mục tồn tại
        /// </summary>
        /// <param name="loaiDanhMucName"></param>
        /// <param name="loaiDanhMucGuid"></param>
        /// <returns></returns>
        bool CheckExitLoaDanhMuc(string loaiDanhMucName, Guid loaiDanhMucGuid);

        /// <summary>
        /// Kiểm tra tên danh mục tồn tại
        /// </summary>
        /// <param name="danhMucName"></param>
        /// /// <param name="loaiDanhMucGuid"></param>
        /// <returns></returns>
        bool CheckExitDanhMuc(string danhMucName,Guid loaiDanhMucGuid);
        /// <summary>
        /// get tất cả loại danh mục theo isActive
        /// </summary>
        /// <param name="isActive">True: Load tất cả kể cả những loại danh mục ẩn; False: chỉ load loại danh mục được hiển thị</param>
        /// <param name="loaiDanhMucGuid"></param>
        /// <returns></returns>
        List<DanhMucThongTin> GetAllKindByIsActive(bool isActive, Guid loaiDanhMucGuid);

        /// <summary>
        /// get một danh mục theo danhMucGuid
        /// </summary>
        /// <param name="danhMucGuid"></param>
        /// <returns></returns>
        List<DanhMucThongTin> GetOne(Guid danhMucGuid);

        /// <summary>
        /// Xóa root và các sub có kind là root muốn xóa
        /// </summary>
        /// <param name="DataKeyValue">DanhMucGuid</param>
        /// <returns></returns>
        bool DeleteKind(Guid DataKeyValue);

        
    }
}
